/**
 * 
 */

/**
 * @author zhongfang
 *
 */
public class RotateArray {

    public void inverse(int[] ns,int start,int end){//颠倒一个数组，个数为n
        int i=start,j=end;
        while(i<j){
        	int temp=ns[i];
        	ns[i]=ns[j];
        	ns[j]=temp;
        	i++;
        	j--;
        }
    }
//    public void rotate(int[] nums, int k) {
//    	if(k>nums.length)
//    		k%=nums.length;
//        inverse(nums, 0,nums.length-1);
//        inverse(nums, 0,k-1);
//        inverse(nums, k,nums.length-1);
//    }
    
//    public void rotate(int[] nums, int k) {
//        int n=nums.length;
//        if(k>n)
//            k%=n;
//        int[] newInts=new int[n];
//        int i=0,j=n-k;
//        while(i<n){
//            newInts[i]=nums[j%n];
//            i++;
//            j++;
//        }
//        for (int j2 = 0; j2 < n; j2++) {//把新数组复制到原数组
//			nums[j2]=newInts[j2];
//		}
//    }
    public void rotate(int[] nums, int k) {
        int n=nums.length;
        if(k>n)
            k%=n;
        int[] newInts=new int[k];
        int i=0;// new array index
        int j=n-k;// old array index
        while (j<n) {
        	newInts[i]=nums[j];
        	i++;
			j++;
		}
        j=n-k-1;
        while (j>=0) {
			nums[j+k]=nums[j];
			j--;
		}
        for (int j2 = 0; j2 < k; j2++) {//把新数组复制到原数组
			nums[j2]=newInts[j2];
		}
    }
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] nums={1,2};
		RotateArray rotateArray=new RotateArray();
		rotateArray.rotate(nums, 1);
		for (int i : nums) {
			System.out.println(i);
		}

	}

}
